/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.marist.cs.os.g3.mos;

import java.util.ArrayList;
import java.util.Queue;

/**
 *
 * @author Intern Model A5290
 */
public class PCB {

    ArrayList<Integer> programTracks;
    ArrayList<Integer> dataTracks;
    ArrayList<Integer> outputLineTracks;
    String programBuffer;
    String dataBuffer;
    int dataTally;
    static enum TerminateReason {

        NORMAL, OUT_OF_DATA, LINE_LIMIT_EXCEEDED, TIME_LIMIT_EXCEEDED, OPERATION_CODE_ERROR, OPERAND_ERROR, INVALID_PAGE_FAULT
    };
    TerminateReason terminateReason;

    static enum destQueue {

        RQ, IOQ, TQ, MQ
    };
    boolean finishedInputSpooling = false;

    public static enum FollowingCards {

        PROGRAM, DATA, NONE
    };
    FollowingCards followingCards;
    int numOfProgramCards = 0;
    int numOfDataCards = 0;
    //int countOfDataCards = 0;
    destQueue nextQueue;
    /**
     * To prepare the two lines of information to send to the ofbs
     * If no ebs available, we have to try again at the next pass
     */
    boolean startedOutputSpooling = false;
    int jobNumber;
    String jobId;
    int quantum;
    //Registers
    int totalTimeCounter;
    int totalTimeLimit;
    int lineLimitCounter;
    int totalLineLimit;
    int IC;
    String IR;
    String R;
    boolean C;
    int PTR;
    int PI;
    int SI;
    int TI;
    int IOI;

    public PCB() {
        programTracks = new ArrayList<>();
        dataTracks = new ArrayList<>();
        outputLineTracks = new ArrayList<>();
        programBuffer = " ";
        dataBuffer = " ";

    }
}
